package com.menhai.personmanagement.mapper;

import java.util.List;
import java.util.Map;

import com.menhai.personmanagement.entity.JbfxReport;
import com.menhai.personmanagement.entity.User;
import com.menhai.personmanagement.entity.co.MbReportCardCO;
import com.menhai.personmanagement.entity.co.UserCo;
import com.menhai.personmanagement.entity.vo.MbReportCardVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.menhai.personmanagement.entity.MbReportCard;
import org.apache.ibatis.annotations.Select;

/**
 * <p>
 * 报卡管理表 Mapper 接口
 * </p>
 *
 * @author shikun
 * @since 2021-11-25
 */
@Mapper
public interface ReportCardMapper extends BaseMapper<MbReportCard>{


	/**
	 * @describe 患者列表
	 * @param page
	 * @param mbReportCardCO
	 * @Return com.baomidou.mybatisplus.core.metadata.IPage<com.menhai.personmanagement.entity.MbReportCard>
	 * @Date 2021/12/14 16:04
	 * @author shikun
	 */
	IPage<MbReportCardVo> selectByList(@Param("page")Page<MbReportCardVo> page, @Param("mbReportCardCO") MbReportCardCO mbReportCardCO);

	/**
	 * insert慢病报卡
	 * @param mbReportCard
	 * @return int
	 */
	public int insert(MbReportCard mbReportCard);
	
	/**
	 * update慢病报卡
	 * @param mbReportCard
	 * @return int
	 */
	public int update(MbReportCard mbReportCard);
	
	/**
	 * 根据编号查询数据
	 * @param bkbh
	 * @return
	 */
	public List<Map<String,Object>> getOneById(@Param("bkbh")String bkbh);

	/**
	 * @describe 每天 慢病数
	 * @param superiorCode
	 * @Return java.util.List<com.menhai.personmanagement.entity.vo.MbReportCardVo>
	 * @Date 2022/1/24 9:53
	 * @author shikun
	 */
	public List<MbReportCardVo> selectBysuperiorCodeAndGroup(@Param("superiorCode")String superiorCode);

	/**
	 * @describe 慢病患者年龄统计
	 * @param superiorCode
	 * @Return java.util.List<com.menhai.personmanagement.entity.vo.MbReportCardVo>
	 * @Date 2022/1/24 10:34
	 * @author shikun
	 */
	public List<MbReportCardVo> selectPatientAgeCombination(@Param("superiorCode")String superiorCode);

	/**
	 * @describe 慢病患者病症统计
	 * @param superiorCode
	 * @Return java.util.List<com.menhai.personmanagement.entity.vo.MbReportCardVo>
	 * @Date 2022/1/24 10:47
	 * @author shikun
	 */
	public List<MbReportCardVo> selectByGroupMbType(@Param("superiorCode")String superiorCode);

/**
 * @describe 慢病患者病症统计 前五
 * @param superiorCode
 * @Return java.util.List<com.menhai.personmanagement.entity.vo.MbReportCardVo>
 * @Date 2022/1/24 11:14
 * @author shikun
 */
	public List<MbReportCardVo> selectByGroupMbTypeLimltOrder(@Param("superiorCode")String superiorCode);
	
	/**
	 * 根据条件查询
	 * @param patientName
	 * @param shstatus
	 * @param sbstatus
	 * @param startDate
	 * @param endDate
	 * @return
	 */
	public List<MbReportCard> getListByCondition(@Param("patientName")String patientName,
			@Param("shstatus")String shstatus,@Param("sbstatus")String sbstatus,
			@Param("startDate")String startDate,@Param("endDate")String endDate,@Param("mbType")String mbType);


	 IPage<MbReportCard> getListByConditionByPage(@Param("page")Page<MbReportCard> page, @Param("mbReportCard") MbReportCard mbReportCard,
			 @Param("minAge")String minAge,@Param("maxAge")String maxAge,@Param("startDate")String startDate,@Param("endDate")String endDate,
			 @Param("hosnumarray") List hosnumarray,@Param("hosnumstr")String hosnumstr);
	 
	 
	 /**
	  * 患者健康档案查询
	  * @param page
	  * @param mbReportCard
	  * @return
	  */
	 IPage<Map<String,Object>> getMbHealthFile(@Param("page")Page<Map<String,Object>> page, @Param("mbReportCard") MbReportCard mbReportCard);





	/**
	 * 根据卡片编号删除报卡
	 * @param bkbh
	 * @return
	 */
	public Integer delete(@Param("bkbh")String bkbh);
	
	
	/**
	 * 上报
	 * @param sbTime
	 * @param bkbh
	 * @return
	 */
	public Integer updateSbstatus(@Param("sbTime")String sbTime,@Param("bkbh")String bkbh);
	
	
	/**
	 * 取消上报
	 * @param bkbh
	 * @return
	 */
	public Integer deleteSbstatus(@Param("bkbh")String bkbh);
	
	/**
	 * 审核
	 * @param shTime
	 * @param bkbh
	 * @return
	 */
	public Integer updateShstatus(@Param("shTime")String shTime,@Param("bkbh")String bkbh);
	
	
	/**
	 * 取消审核
	 * @param bkbh
	 * @return
	 */
	public Integer deleteShstatus(@Param("bkbh")String bkbh);
	
	/**
	 * 获取上报状态
	 * @param bkbh
	 * @return
	 */
	public Map<String,Object> getShStatus(@Param("bkbh")String bkbh);
	
	/**
	 * 更新报卡删除状态
	 * @param bkbh
	 * @return
	 */
	public Integer updateIsDelete(@Param("bkbh")String bkbh);
	
	
	/**
	 * 同一个人同一慢病类型的报卡只能建一张
	 * @param populationid
	 * @param mbType
	 * @return
	 */
	public int selectIsSame(@Param("populationid")String populationid,@Param("mbType")String mbType);
	
	
	/**
	 * 慢病新建报卡  查询人口姓名集合
	 * @param patientName
	 * @param hosnum
	 * @param mblx
	 * @return
	 */
	public List<Map<String,Object>> getReportPatient(@Param("patientName")String patientName,@Param("hosnum")String hosnum,@Param("mblx")String mblx);

	/**
	 * 根据当前系统时间，重新计算年龄
	 * @param bkbh
	 * @return
	 */
	public Integer updateAge(@Param("bkbh")String bkbh);
	
	/**
	 * 规范人员管理统计表登记人数
	 * @param hosnum
	 * @param year
	 * @param mbType
	 * @return
	 */
	public int chronicPatientGroupsStatisticsResgister(@Param("hosnum")String hosnum,@Param("year")String year,@Param("mbType")String mbType);
	

	
	/**
	 * 
	 * @param hosnum
	 * @param year
	 * @return
	 */
	public Map<String,Object> test1(@Param("hosnum")String hosnum,@Param("year")String year);
	
	
	/**
	 * 
	 * @param hosnum
	 * @param year
	 * @return
	 */
	public Map<String,Object> test2(@Param("hosnum")String hosnum,@Param("year")String year);
	
	
	/**
	 * 慢病人员药品使用统计患者查询
	 * @param hosnum
	 * @param patientName
	 * @param mbType
	 * @return
	 */
	public List<Map<String,Object>> ywsyPatient(@Param("hosnum")String hosnum,@Param("patientName")String patientName,@Param("mbType")String mbType);
	
	/**
	 * 慢病人员药品使用统计患者信息
	 * @param bkbh
	 * @return
	 */
	public Map<String,Object> mbryypsybPatientInfo(@Param("bkbh")String bkbh);
	
	/**
	 * 慢病人员药品使用统计患者药品信息
	 * @param bkbh
	 * @return
	 */
	public List<Map<String,Object>> mbryypsybPatientMedInfo(@Param("bkbh")String bkbh);
	
	/**
	 * 药物使用情况统计表
	 * @param hosnum
	 * @param year
	 * @return
	 */
	public List<Map<String,Object>> ywsyqktjb(@Param("hosnum")String hosnum,@Param("year")String year);
	
	
	/**
	 * 慢病患者健康档案查询
	 * @param mbReportCard
	 * @return
	 */
	public List<Map<String,Object>> getMbhealthFilesList(@Param("mbReportCard")MbReportCard mbReportCard);
	
	/**
	 * 体检人群年龄
	 * @param hosnum
	 * @return
	 */
	public List<Map<String,Object>> pexamPopulation(@Param("hosnum")String hosnum,@Param("startDate")String startDate,@Param("endDate")String endDate);

	/**
	 * 体检人群年龄（新）
	 * @param hosnum
	 * @return
	 */
	public List<Map<String,Object>> pexamPopulation2(@Param("hosnum")String hosnum,@Param("startDate")String startDate,@Param("endDate")String endDate,@Param("sql_mb") String sql_mb,@Param("sql_select_mb") String sql_select_mb);


	/**
	 * 个人体检频次表获取人口姓名
	 * @param hosnum
	 * @param populationName
	 * @return
	 */
	public List<Map<String,Object>> getTjpcName(@Param("hosnum")String hosnum,@Param("populationName")String populationName);
	
	
	/**
	 * 个人体检频次表获取人口信息
	 * @param populationId
	 * @return
	 */
	public Map<String,Object> getTjpcPopulationInfo(@Param("populationId")String populationId);
	
	
	/**
	 * 个人体检频次表获取体检信息
	 * @param populationId
	 * @return
	 */
	public List<Map<String,Object>> getTjpcPexamInfo(@Param("populationId")String populationId);
	
	
	/**
	 * 症状指标查询
	 * @param page
	 * @param mbReportCard
	 * @param minAge
	 * @param maxAge
	 * @param startDate
	 * @param endDatejl
	 * @return
	 */
	IPage<MbReportCard> getZzzb(@Param("page")Page<MbReportCard> page, @Param("mbReportCard") MbReportCard mbReportCard);
	
	
	/**\
	 * 症状指标导出
	 * @param mbReportCard
	 * @return
	 */
	List<MbReportCard> getZzzbExport(@Param("mbReportCard") MbReportCard mbReportCard);


	/**
	 * 各村人数
	 * @return
	 */
	public List gecunrenshu(@Param("mbType") String mbType);
	
	/**
	 * 各村人数
	 * @return
	 */
	public List gecunrenshush(@Param("mbType") String mbType);

	/**
	 * 疾病风险统计
	 * @param hosnum
	 * @return
	 */
	public List<Map<String,Object>> getFxzsList(@Param("hosnum") String hosnum,@Param("startDate") String startDate,@Param("endDate") String endDate);


	/**
	 * 疾病风险查询
	 * @param page
	 * @param jbfxReport
	 * @return
	 */
	IPage<Map<String,Object>> getJbfxList(@Param("page")Page<JbfxReport> page, @Param("jbfxReport") JbfxReport jbfxReport);

	/**
	 * 导出疾病风险查询
	 * @param jbfxReport
	 * @return
	 */
	List<Map<String,Object>> exportJbfxList(@Param("jbfxReport") JbfxReport jbfxReport);

	/**
	 * 脏腑辩证查询
	 * @param hosnum
	 * @param startDate
	 * @param endDate
	 * @return
	 */
	List<Map<String,Object>> zfbzList(@Param("hosnum") String hosnum,@Param("startDate") String startDate,@Param("endDate") String endDate);

	/**
	 * 体质辩证查询
	 * @param hosnum
	 * @return
	 */
	List<Map<String,Object>> getTzbzList(@Param("hosnum") String hosnum,@Param("startDate") String startDate,@Param("endDate") String endDate);
	/**
	 * 体质辩证查询(新)
	 * @param hosnum
	 * @return
	 */
	List<Map<String,Object>> getTzbzList2(@Param("hosnum") String hosnum,@Param("startDate") String startDate,@Param("endDate") String endDate);
	/**
	 * 体质查询
	 * @param page
	 * @param hosnum
	 * @param startDate
	 * @param endDate
	 * @param pname
	 * @return
	 */
	IPage<Map<String,Object>> getTzList(@Param("page")Page<Map<String,Object>> page, @Param("hosnum") String hosnum, @Param("startDate") String startDate, @Param("endDate") String endDate, @Param("pname") String pname);
}
